1. Field of the Invention
Embodiments of the present invention are generally directed to systems and methods for sending and receiving data in a system environment.
2. Background
There is often a need for software applications running on one or more separate machines to communicate and exchange data over one or more networks as part of a distributed computing system. For example, in a shipping carrier system, a software application running on a mobile device (e.g., a data gathering device on a shipping truck) may need to exchange telematics data with another software application running on a central server. As the availability of various communication methods (e.g., cellular networks, wireless local area networks) may vary depending on the location of the mobile device, the shipping carrier system is configured to permit the software applications to exchange data over a variety of networks.
In addition, as the cost of exchanging data varies depending on the communication network used, it may also be desirable to prioritize data being exchanged. For example, telematics data indicating an emergency on a shipping truck would be of high priority and preferably exchanged as quickly as possible with lesser regard to cost. However, telematics data used for general analysis at a later date would be of relatively low priority and preferably exchanged as cheaply as possible with lesser regard to timeliness.
There are, however, a number of technical problems associated with configuring a shipping carrier system to accomplish the preferences described above. For example, software applications are commonly coupled to specific communication methods. As such, it may also be difficult and time consuming to configure software applications to transmit data over a variety of communications methods. In addition, it can also be difficult to reconfigure existing software applications to implement new communication methods as they emerge (e.g., 4G cellular networks, high speed internet networks) and phase out older communication methods as they become obsolete.
Accordingly, there is a need in the art for a system that (i) enables software applications running on one or more separate machines to communicate and exchange data via a variety of communication methods, (ii) selects a preferred communication method for a given set of data based on the priority of the data, and/or (iii) facilitates the addition of new communication methods to the system, and the removal of obsolete communication methods from the system, with minimal change to software applications.